import org.junit.Before;
import org.junit.Test;
import junit.framework.TestCase;

public class TesteProfessor extends TestCase {
	Professor professor;
	
	@Before
	public void setUp() throws Exception {
		professor = new Professor("Joao", "123", "DSC");
	}

	@Test
	public void testConstrutorProfessor() throws Exception {
		Professor prof1 = new Professor("Marcos");
		assertEquals("construtor 1", "Marcos", prof1.getNome());
		
		Professor prof2 = new Professor("Antonio", "222");
		assertEquals("construtor 2 nome", "Antonio", prof2.getNome());
		assertEquals("construtor 2 matricula", "222", prof2.getMatricula());
		
		try {
			Professor prof3 = new Professor("1Joao");
			Professor prof4 = new Professor("Jo2ao");
			Professor prof5 = new Professor("Joao3");
			fail("Esperava-se uma excecao de nome invalido");
		} catch (Exception e) {
			assertEquals("Nome invalido", "Nome nao pode conter numeros", e.getMessage());
		}
		try {
			Professor prof6 = new Professor("");
			fail("Esperava-se uma excecao de nome vazio");
		} catch (Exception e) {
			assertEquals("Nome vazio", "Nome nao pode ser vazio", e.getMessage());
		}
		try {
			Professor prof7 = new Professor(null);
			fail("Esperava-se uma excecao de nome nulo");
		} catch (Exception e) {
			assertEquals("Nome nulo", "Nome nao pode ser nulo", e.getMessage());
		}
		
		professor = null;
	}
	
	@Test
	public void testGetNome() throws Exception {
		assertEquals("get nome com erro", "Joao", professor.getNome());
		professor = null;
	}
	
	@Test
	public void testSetNome() {
		professor.setNome("Jose");
		assertEquals("set nome com erro", "Jose", professor.getNome());
		professor = null;
	}

	@Test
	public void testGetMatricula() {
		assertEquals("get matricula com erro", "123", professor.getMatricula());
		professor = null;
	}
	
	@Test
	public void testSetMatricula() {
		professor.setMatricula("000");
		assertEquals("set matricula com erro", "000", professor.getMatricula());
		professor = null;
	}
	
	@Test
	public void testGetDepartamento() {
		assertEquals("get departamento com erro", "DSC", professor.getDepartamento());
		professor = null;
	}
	
	@Test
	public void testSetDepartamento() {
		professor.setDepartamento("DF");
		assertEquals("set departamento com erro", "DF", professor.getDepartamento());
		professor = null;
	}
	
	@Test
	public void testGetStatus() {
		assertEquals("get Status com erro", true, professor.getStatus());
		professor = null;
	}
	
	@Test
	public void testSetStatus() {
		professor.setStatus(false);
		assertEquals("set Status com erro", false, professor.getStatus());
		professor = null;
	}
}
